package org.hfy.entity;

import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableName;
import lombok.Data;
import lombok.EqualsAndHashCode;

import javax.validation.constraints.NotBlank;
import javax.validation.constraints.NotNull;
import javax.validation.constraints.Size;
import java.math.BigDecimal;
import java.time.LocalDate;
import java.util.List;

/**
 * 报价单实体类
 * 
 * @author hfy
 * @version 1.0
 */
@Data
@EqualsAndHashCode(callSuper = true)
@TableName("quotations")
public class Quotation extends BaseEntity {

    /**
     * 报价单号 (系统自动生成，不需要校验)
     */
    @Size(max = 50, message = "报价单号长度不能超过50个字符")
    @TableField("quotation_no")
    private String quotationNo;

    /**
     * 客户代码
     */
    @NotBlank(message = "客户代码不能为空")
    @Size(max = 50, message = "客户代码长度不能超过50个字符")
    @TableField("customer_code")
    private String customerCode;

    /**
     * 客户名称
     */
    @NotBlank(message = "客户名称不能为空")
    @Size(max = 100, message = "客户名称长度不能超过100个字符")
    @TableField("customer_name")
    private String customerName;

    /**
     * 业务员
     */
    @NotBlank(message = "业务员不能为空")
    @Size(max = 50, message = "业务员长度不能超过50个字符")
    @TableField("salesperson")
    private String salesperson;

    /**
     * 合同编号
     */
    @Size(max = 50, message = "合同编号长度不能超过50个字符")
    @TableField("contract_no")
    private String contractNo;

    /**
     * 订单日期
     */
    @NotNull(message = "订单日期不能为空")
    @TableField("order_date")
    private LocalDate orderDate;

    /**
     * 是否含税(0-否, 1-增值税票13%)
     */
    @TableField("is_tax_included")
    private Boolean isTaxIncluded;

    /**
     * 付款方式
     */
    @NotBlank(message = "付款方式不能为空")
    @Size(max = 50, message = "付款方式长度不能超过50个字符")
    @TableField("payment_method")
    private String paymentMethod;

    /**
     * 总金额
     */
    @TableField("total_amount")
    private BigDecimal totalAmount;

    /**
     * 含税总金额
     */
    @TableField("total_tax_amount")
    private BigDecimal totalTaxAmount;

    /**
     * 状态
     */
    @TableField("status")
    private String status;

    /**
     * 备注
     */
    @TableField("remark")
    private String remark;

    /**
     * 创建人
     */
    @Size(max = 50, message = "创建人长度不能超过50个字符")
    @TableField("created_by")
    private String createdBy;

    /**
     * 报价单物料明细 (非数据库字段)
     */
    @TableField(exist = false)
    private List<QuotationItem> items;
} 